System and method for adaptive nonlinear filtering

ABSTRACT

An adaptive nonlinear filtering system includes an adaptive filter module that is configured to generate relative location information pertaining to a relative location of an input signal within an input range; determine an input dependent filter parameter based at least in part on the relative location information; generate an output signal based at least in part on the input dependent filter parameter; and feed back a feedback signal that is generated based at least in part on the output signal and a target signal.

CROSS REFERENCE TO OTHER APPLICATIONS

This application is a continuation in part of U.S. patent applicationSer. No. 11/061,850 entitled LOW-COMPLEXITY NONLINEAR FILTERS filed Feb.18, 2005, now U.S. Pat. No. 7,613,759 which is incorporated herein byreference for all purposes.

This application claims priority to U.S. Provisional Patent ApplicationNo. 60/998,057 entitled CANONICAL NONLINEAR FILTER filed Oct. 4, 2007which is incorporated herein by reference for all purposes.

BACKGROUND OF THE INVENTION

FIG. 1A is a block diagram illustrating a signal model of a typicalsystem. An input x is sent to system 100, which applies a function F tox to generate an output y. Since it is possible for the function to varyover time, F is also dependent on time t. In many systems, it isdesirable for the system function F(x, t) to be linear. FIG. 1B is athree-dimensional (3-D) diagram illustrating a linear relationshipbetween the input x, the output y, and time t. In this ideal case theinput and the output have a linear relationship that is constantthroughout time t. Thus, function y=F(x, t) forms a plane in the 3-Ddiagram.

It is common, however, for the system to be nonlinear. There are manypossible causes for system nonlinearities, including characteristics ofnonlinear components (such as conductors, capacitors and transistors),the input signal's frequency subrange, history and rate of change (alsoreferred to “slew rate”), as well as external factors such as operatingtemperature. FIG. 1C is a 3-D diagram illustrating a typical nonlinearrelationship. In this example, not only is the relationship betweeninput x and output y nonlinear, this nonlinear relationship changes overtime, as illustrated by sample functions F1(x, t1), F2(x, t2), and F3(x,t3). Thus, the function y=F(x, t) forms a nonlinear manifold. It isoften useful to have filters that can implement this type of nonlinearfunctions. Many existing nonlinear filters, however, are complex,expensive, and unstable.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments of the invention are disclosed in the followingdetailed description and the accompanying drawings.

FIG. 1A is a block diagram illustrating a signal model of a typicalsystem.

FIG. 1B is a three-dimensional (3-D) diagram illustrating a linearrelationship between the input x, the output y, and time t.

FIG. 1C is a 3-D diagram illustrating a typical nonlinear relationship.

FIG. 2 is a block diagram illustrating an embodiment of a nonlinearadaptive filter.

FIG. 3 is a diagram illustrating in greater detail an exampleimplementation of memory banks 206 a-206 d of FIG. 2.

FIG. 4A is a block diagram illustrating another embodiment of asimplified adaptive nonlinear filter.

FIG. 4B is a diagram illustrating in greater detail an exampleimplementation of memory banks 406 a-406 d of FIG. 4A.

FIG. 5 is a flowchart illustrating an embodiment of a process foroperating an adaptive nonlinear filter.

FIG. 6 is a block diagram illustrating an embodiment of a cascadednonlinear filter.

FIG. 7 is a block diagram illustrating another embodiment of an adaptivenonlinear filter.

FIGS. 8 and 9 are block diagrams illustrating embodiments of adaptivenonlinear filters that handle even and odd harmonic distortions,respectively.

FIGS. 10A-10C are block diagrams illustrating several exampleapplications that employ nonlinear adaptive filters.

DETAILED DESCRIPTION

The invention can be implemented in numerous ways, including as aprocess; an apparatus; a system; a composition of matter; a computerprogram product embodied on a computer readable storage medium; and/or aprocessor, such as a processor configured to execute instructions storedon and/or provided by a memory coupled to the processor. In thisspecification, these implementations, or any other form that theinvention may take, may be referred to as techniques. In general, theorder of the steps of disclosed processes may be altered within thescope of the invention. Unless stated otherwise, a component such as aprocessor or a memory described as being configured to perform a taskmay be implemented as a general component that is temporarily configuredto perform the task at a given time or a specific component that ismanufactured to perform the task. As used herein, the term ‘processor’refers to one or more devices, circuits, and/or processing coresconfigured to process data, such as computer program instructions.

A detailed description of one or more embodiments of the invention isprovided below along with accompanying figures that illustrate theprinciples of the invention. The invention is described in connectionwith such embodiments, but the invention is not limited to anyembodiment. The scope of the invention is limited only by the claims andthe invention encompasses numerous alternatives, modifications andequivalents. Numerous specific details are set forth in the followingdescription in order to provide a thorough understanding of theinvention. These details are provided for the purpose of example and theinvention may be practiced according to the claims without some or allof these specific details. For the purpose of clarity, technicalmaterial that is known in the technical fields related to the inventionhas not been described in detail so that the invention is notunnecessarily obscured.

A nonlinear adaptive filter is disclosed. In some embodiments, thenonlinear adaptive filter includes interfaces for receiving an inputsignal and a target signal. It further includes an adaptive filtermodule that is configured to generate relative location informationpertaining to a relative location of the input signal within a possiblerange of inputs. A thermometer code address generator is used in someembodiments to generate the relative location information. The relativelocation information is used to determine input dependent filterparameters. In some embodiments, the relative location informationincludes a thermometer coded address vector, which is used to selectinput dependent filter parameters from a plurality of memory banks. Insome embodiments, the input dependent filter parameters include filtercoefficients that are used to generate an output signal. A feedbacksignal is generated based at least in part on an output signal and thetarget signal. Stored input dependent filter parameters are adaptedbased on the feedback signal.

FIG. 2 is a block diagram illustrating an embodiment of a nonlinearadaptive filter. In this example, nonlinear adaptive filter 200implements a nonlinear filter function expressed as:y _(n) =ã ₀(X _(n))x _(n) +ã ₁(X _(n))x _(n−1) + . . . +ã _(N−1)(X_(n))x _(n−N+1)  [1]where X_(n)=[x_(n) . . . x_(n−N+1)].

The above nonlinear filter function has filter taps with coefficientsã_(k) that depend on the present input sample as well as previous inputsamples. In some embodiments, each coefficient is implemented as aconstant plus a nonlinear function of the signal. As will be discussedin detail below, these coefficients are adaptable to achieve the desiredfilter response, such as a filter response that is a nonlinear function.

An alternative expression for equation [1] is:

$\begin{matrix}{y_{n} = {{\left\lbrack {{{\overset{\sim}{A}}_{0}\left( x_{n} \right)} + {{\overset{\sim}{A}}_{1}\left( x_{n - 1} \right)} + \ldots + {{\overset{\sim}{A}}_{N - 1}\left( x_{n - N + 1} \right)}} \right\rbrack X_{n}} = {\quad{{\left\lbrack {\sum\limits_{j = 0}^{N - 1}\;{{\overset{\sim}{A}}_{j}\left( x_{n - j} \right)}} \right\rbrack X_{n}} = \;{{{\overset{\sim}{A}}_{n}\left( X_{n} \right)}X_{n}}}}}} & \lbrack 2\rbrack\end{matrix}$where Ã_(j)=(x_(n−j))=[ã_(j,0)(x_(n−j))ã_(j,1)(x_(n−j)) . . .ã_(j,N−1)(x_(n−j))].

The above equations indicate that each filter tap coefficient can beexpressed as a sum of sub-taps

$\left( {i.e.\mspace{14mu}{\sum\limits_{j = 0}^{N - 1}\;{{\overset{\sim}{A}}_{j}\left( x_{n - j} \right)}}} \right),$and each sub-tap Ã_(j)(x_(n−j)) in turn is a different function ofx_(n−j). Equivalently, the coefficient of the k-th filter tap can beexpressed as:

$\begin{matrix}{{{\overset{\sim}{a}}_{k}\left( X_{n} \right)} = {\left\lbrack {\sum\limits_{j = 0}^{N - 1}\;{{\overset{\sim}{a}}_{j,k}\left( x_{n - j} \right)}} \right\rbrack.}} & \lbrack 3\rbrack\end{matrix}$

Returning to FIG. 2, nonlinear adaptive filter 200 includes a firstinput interface 202 on which an input digital signal x_(n) is received,and a second input interface 204 on which the target signal η_(n) isreceived. As will be discussed in greater detail below, the filteradapts its coefficients so that its output {circumflex over (η)}_(n)tracks the target signal η_(n). In other words, the filter adapts untilthe difference between its output is {circumflex over (η)}_(n) and thetarget signal η_(n) is within a predefined value.

The values of filter coefficients ã₀, ã₁, ã₂, and ã₃ each depend on thepresent input sample as well as past input samples (sometimes alsoreferred to as delayed input samples or the input signal's history). Thecoefficient values are computed based at least in part on sums ofselected, pre-stored values. In this example, the values are selectedfrom appropriate storage locations within a plurality of memory banks.System 200 includes memory banks 206 a, 206 b, 206 c, and 206 d thatcorrespond to filter taps 0, 1, 2, and 3, respectively. Although fourmemory banks are shown for purposes of example, the number of memorybanks depends on the number of filter taps N and may vary in otherembodiments. The memory banks may be implemented using one or morememory devices of any appropriate type, such as registers, buffers,DRAM, SRAM, etc. The memory banks represent the logical organization ofmemory used to store filter parameters. In some embodiments, the memorybanks are implemented using M physical memory devices where M does notnecessarily correspond to N. For example, all four memory banks shown insystem 200 may be implemented using a single memory device such as asingle EEPROM or RAM chip.

According to this example, each memory bank stores N sets of values(N=number of taps) that contribute to the N filter coefficients. Eachset of values is implemented as a coefficient vector that includes Sentries. The value of S depends on the granularity or precision of thenonlinear function being implemented. For example, if the nonlinearfunction is such that for all input values β_(min)<x_(n−j)≦β₀ (whereβ_(min) is the minimum expected input value, and β₀ is a predefinedvalue), coefficient function Ã_(n−j)(x_(n−j)) maps to one set of vectorvalues, and for all input values β₀<x_(n−j)<β_(max) (where β_(max) isthe maximum expected input value), the coefficient function maps toanother set of vector values, then the coefficient function is said tohave a granularity of 2 and each set of coefficient vector includes twoentries. In the example shown in FIG. 2, the possible inputs are dividedinto four subranges β_(min)<x_(n−j)≦β₀, β₀<x_(n−j)≦β₁, andβ₁<x_(n−j)≦β₂, and β₂<x_(n−j)≦β_(max), which map to four possiblecoefficient vectors ã_(n−j,0), ã_(n−j,1), ã_(n−j,2), and ã_(n−j,3),respectively. Thus, the coefficient function has a granularity of 4 andA memory bank therefore stores 4 coefficient vectors ã_(n−j,0),ã_(n−j,1), ã_(n−j,2), and ã_(n−j,3). More generally, if all the possibleinput values are divided into S subranges and each input subrange mapsto a corresponding coefficient vector (i.e., a granularity of S), theneach vector in the memory bank stores S entries.

A thermometer code address generator 208 is used to facilitate theselection of the appropriate coefficient vector from the memory banks.The thermometer code address generator indicates the relative locationof the input signal within the range of possible input signals. In someembodiments, the thermometer code address generator includes one or morecomparators that compare the input with certain predefined subranges,and one or more multiplexers that map the output of the comparators toan appropriate address vector. The address vector indicates the relativelocation of the input signal within the possible input range. In someembodiments, the address vector has at most one sign change between anytwo adjacent entries.

The thermometer code address generator is configured to divide thepossible range of inputs {right arrow over (β)}={β_(min), β_(max)} intoS subsubranges. The values in these subsubranges may be distributedevenly, logarithmically, exponentially, or in any other appropriateways. Upon receiving an input value x_(n−j), the thermometer codeaddress generator applies the following coding function to generate theappropriate output vector:{right arrow over (x)} _(n−j)=Sign(x _(n−j)−{right arrow over (β)})  [4]

Based on the thermometer coder output, the set of values thatcorresponds to the fist positive location in vector {right arrow over(x)}_(n−j) is selected from the memory bank. The output of thethermometer code address generator is delayed by delay blocks 210 b, 210c, and 210 d. The delayed values are used to select the appropriatestored coefficient vectors from corresponding memory banks. At eachfilter tap n−j, selected values from the filter banks (the “sub-taps”)are summed to generate the corresponding coefficient value ã_(n−j). Insome alternative embodiments, the thermometer code address generatordirectly determines which coefficient values in the memory bank shouldbe selected.

FIG. 3 is a diagram illustrating in greater detail an exampleimplementation of memory banks 206 a-206 d of FIG. 2. The figure gives anumerical example of how to compute coefficients ã_(n−j). In thisexample, memory banks 206 a-206 d are implemented as four 4×4 matrices.Other implementations are possible in other embodiments. Four rows ofthe matrices map to 4 input subranges, which are [−1, 0], (0, 1], (1,2], and (2, 3]. Each row is a vector with 4 entries. In this example,x_(n)=1.2, which falls in the subrange of (1, 2], and corresponds to athermometer code address generator output of [−1 −1 +1 +1]. Thus,ã_(0,2), the third row from memory bank 206 a, is selected. Similarly,given x_(n−1)=0.7, x_(n−2)=2.9, and x_(n−3)=−0.5, the correspondingthermometer code address generator outputs are {right arrow over(x)}_(n−1)=[−1 +1 +1 +1], {right arrow over (x)}_(n−2)=[−1 −1 −1 +1],and {right arrow over (x)}_(n−3)=[+1 +1 +1 +1], respectively. The secondrow of memory bank 206 b (ã_(1,1)), the last row of memory bank 206 c(ã_(2,3)), and the first row of memory bank 206 d (ã_(3,0)) are selectedaccordingly.

To generate a filter coefficient for a filter tap, the correspondingentries from the selected rows are summed. In this example, the 0-thentries of the selected rows (i.e., 11.3, 0.7, 2.0, 0.2) are the valuesselected and summed to generate coefficient ã₀ for the tap 0. Similarly,6.6, 1.4, 2.1, and 0.1 are the values selected and summed to generatecoefficient ã₀ for tap 1, and so on.

Returning to FIG. 2, the input samples are multiplied with the filtercoefficients, generating a filter output which expressed as:

$\begin{matrix}{y_{n} = {{\hat{\eta}}_{n} = {\sum\limits_{j = 0}^{N - 1}\;{{\overset{\sim}{a}}_{j}x_{n - j}}}}} & \lbrack 5\rbrack\end{matrix}$

A target signal η_(n) is received on interface 204. How the targetsignal is obtained depends on system configuration and is described ingreater detail in FIGS. 10A-10C below. In example system 200, the outputis subtracted from a target signal η_(n) to obtain an error ε_(n). Theinput signal is multiplied with the error as well as an updatecoefficient μ, and the result is fed back to adapt the filtercoefficients. In some embodiments, the initial value of μ is arbitrarilyselected. During the adaptation process, μ is continuously adjusted toadapt the filter coefficients and reduce output error, according totechniques such as least mean squared error (LMSE). The update functionof adaptive filter 200 is expressed as:Ã _(j)({right arrow over (X)} _(n))=Ã _(j)({right arrow over (X)}_(n))+με_(n) X _(n)  [6]where{right arrow over (X)} _(n) [{right arrow over (x)} _(n) {right arrowover (x)} _(n−1) . . . {right arrow over (x)} _(n−N+1)]are the thermometer-coded values of the input signals.

-   In effect this means    ã _(j,k)({right arrow over (x)} _(n−j))=ã _(j,k)({right arrow over    (x)} _(n−j))+με_(n) x _(n−k)    where the update to memory bank j column k at address indexed by    {right arrow over (x)}_(n−j) is a function of the error ε_(n)    multiplied by the signal x_(n−k) to which the output of this column    had contributed in forming the coefficient ã_(j,k)({right arrow over    (x)}_(n−j)).

The feedback loop for coefficients stored in memory bank 206 d isillustrated in detail in FIG. 2. In the feedback loop shown, inputsamples x_(n), x_(n−1), x_(n−2), and x_(n−3) are each multiplied withμε_(n). The results are delayed and added to the coefficient vector inmemory bank 206 d that is currently selected based on the current memorylocation of {right arrow over (x)}_(n−3). Referring to the detailedimplementation example shown in FIG. 3, the values in row [0.2 0.1 2.40.5] are updated based on the results of update function [6]. Similarly,the values in other selected rows of the other memory banks are alsoupdated, although the feedback loops are omitted to keep the diagramclear. In the following discussion, the feedback loops are sometimesomitted from the figures even though in practice the feedback loops areincluded and the same principles of feedback and update apply.

A filter system similar to 200 is a cost effective way of implementingthe theoretically optimal Volterra series expansion and as well asWeiner-Hammerstein models that include memory dispersion. In someembodiments, a filter with N taps is used, where each tap k has the formof equation [3], i.e., the coefficient function

${{{\overset{\sim}{a}}_{k}\left( X_{n} \right)} = \left\lbrack {\sum\limits_{j = 0}^{N - 1}\;{{\overset{\sim}{a}}_{j,k}\left( x_{n - j} \right)}} \right\rbrack},$in which ã_(j,k)(x_(n−j)) is an arbitrarily complex nonlinear functionof the variable x_(n-j). Using Volterra series expansion,ã_(j,k)(x_(n−j)) can be expressed to arbitrary precision using an m^(th)order polynomial of x_(n−j). Similarly, all the x_(n−j)'s in tap k(where j=0, 1, . . . N−1) can also be expressed to arbitrary precision.For example, the coefficient ã_(j,k)(x_(n−j)) can be written as a 5^(th)order polynomialã _(j,k)(x _(n−j))=x _(n) +x _(n) ² +x _(n) ³ +x _(n) ⁴ +x _(n) ⁵  [7]where the weights of the coefficients are assumed to be 1 for the sakeof simplicity but may vary in practice. Accordingly,

$\begin{matrix}{{{\overset{\sim}{a}}_{k}\left( X_{n} \right)} = {x_{n} + x_{n}^{2} + x_{n}^{3} + x_{n}^{4} + x_{n}^{5} + x_{n - 1} + x_{n - 1}^{2} + x_{n - 1}^{3} + x_{n - 1}^{4} + x_{n - 1}^{5} + {\vdots\mspace{20mu} x_{n - N + 1}} + x_{n - N + 1}^{2} + x_{n - N + 1}^{3} + x_{n - N + 1}^{4} + x_{n - N + 1}^{5}}} & \lbrack 8\rbrack\end{matrix}$

The k^(th) coefficient ã_(k)(X_(n)) expressed as equation [8] ismultiplied by x_(n−k), forming a polynomial with cross terms comprisingx_(n−k−j) multiplied with x_(n−k) for j=0, 1, . . . , N−1. Thus, thenonlinear function is a true Volterra expansion of arbitrarily highdegree and has memory. For example, when k=0, the function includes allcross terms of x_(n), and for k=1 the function includes all cross termsof x_(n−1), and so on.

In some embodiments, rather than storing all the coefficients in memory,filter coefficient functions including construction functions such asRadial Basis Functions (RBF), cubic splines, or sinc functions are usedto provide the coefficients. The construction functions include windowedinterpolation functions that use weighting coefficients and distancefrom function origins to generate interpolation values. In aconstruction function, discrete sample values are summed to generate asmoothed approximation of a background function and values betweensample points. The general format for a construction function is:

$\begin{matrix}{{v(x)} = {\sum\limits_{i = 1}^{L}\;{w_{i}\Phi\;\left( {{x - c_{i}}} \right)}}} & \lbrack 9\rbrack\end{matrix}$where c_(i) are the centers of the RBF and w_(i) are the coefficients.

An example of a RBF is:

${v_{n}(x)} = {{\sum\limits_{i = 1}^{L}\;{w_{i}{{Exp}\left( {{- \gamma}{{x_{n} - c_{i}}}} \right)}}} = {W_{n}E_{n}^{T}}}$where γ is a constant that determines the shape of the RBF. Thecoefficients are adapted according to the following:W _(n+1) =W _(n)+με_(n) E _(n)where W_(n)=└w_(l,n) . . . w_(L,n)┘ and E_(n)=[Exp(−γ∥x_(n)−c_(l)∥) . .. Exp(−γ∥x_(n)−c_(L)∥)]

Thus, the filter can be implemented using RBF components instead ofimplementing the polynomial of equation [7] as an actual polynomialstructure or storing the coefficients in a lookup table. Thisimplementation allows for tradeoffs be made between the amount of memoryand the number of multiplications required. For example, let

$\begin{matrix}{{{\overset{\sim}{a}}_{j,k}\left( x_{n - j} \right)} = {{x_{n} + x_{n}^{2} + x_{n}^{3} + x_{n}^{4} + x_{n}^{5}} = {\sum\limits_{i = 1}^{L}\;{w_{i}{{Exp}\left( {{x_{n} - c_{i}}} \right)}}}}} & \lbrack 10\rbrack\end{matrix}$

In some embodiments, the number of centers L is chosen depending on thedesired accuracy and the multiplication requirements.

Note that when a signal x lies on the center c, the coefficient wcorresponds to what is stored in memory since Exp (∥x_(n)−c_(i)∥)=1.This means that a RBF can be used in conjunction with stored values toprovide interpolation between quantization levels of x. Since only a fewadjacent locations contribute to the interpolated result at x, theamount of processing required by the RBF in this case is less than if nostored values were used.

In an N-tap filter embodiment similar to filter 200 described above, theoutput is obtained with a convolution function that requires Nmultiplications. The number of multiplications can be reduced in someembodiments by simplifying the expression for the coefficients. FIG. 4Ais a block diagram illustrating another embodiment of a simplifiedadaptive nonlinear filter. In simplified filter 400, each tap kcorresponds to a polynomial function of the signal x_(n−j) withoutmultiplication with other cross terms. The simplified filter structureis expressed as:Ã(X _(n))=[ã _(0,0)(x _(n))ã _(1,0)(x _(n−1)) . . . ã _(N−1,0)(x_(n−N+1))]  [11].The output is expressed as:y _(n) =ã _(0,0)(x _(n))+ã _(1,0)(x _(n−1))+ . . . +ã _(N−1,0)(x_(n−N+1))  [12].

In other words, each filter tap k implements a corresponding functionã_(k) of _(k)x_(n−). Filter function [12] does not require anymultiplication and is computationally inexpensive. To implement thefilter, the possible range of inputs {right arrow over (β)}={β_(min),β_(max)} is divided into S subranges based on the desired functiongranularity/precision. Each input subrange k maps to a correspondingfunction ã_(k)(x_(n−k)). Rather than storing vectors that correspond tothe subranges as was shown in FIG. 3, memory banks 406 a-d in thisexample store functions that correspond to the subranges. For example,if there are 4 subranges, then 4 values of the functionsã_(k,0)(x_(n−k,0)), ã_(k,0)(x_(n−k,1)), ã_(k,0)(x_(n−k,2)), andã_(k,0)(x_(n−k,3)) are stored in the k-th memory bank.

The input x_(n) received on input interface 402 is sent to a thermometercode address generator 404, which generates an appropriate output vectoraccording to equation [4]. The vector is used to locate a valueã_(0,0)(x_(n,j0)) in memory bank 406 a that maps to the input, where j0depends on the subrange in which the input is located. Similarly,thermometer coded and delayed input samples are used to locate in memorybanks 406 b, 406 c, and 406 d function values ã_(1,0)(x_(n−1,j1)),ã_(2,0)(x_(n−2,j2)), and ã_(3,0)(x_(n−3,j3)), respectively.

FIG. 4B is a diagram illustrating in greater detail an exampleimplementation of memory banks 406 a-406 d of FIG. 4A. In the exampleshow, memory banks 406 a-406 d are implemented as four 4×1 matrices.Values stored in rows that correspond to the thermometer coded inputaddresses are selected and summed.

Returning to FIG. 4A, the selected values are summed to generate output{circumflex over (η)}_(n). Since the function values are obtained bymapping the input to stored function values, multiplication is notrequired for generating the output. The output is subtracted from thetarget signal η_(n) to obtain an error signal ε_(n). The error signal ismultiplied with update coefficient μ, and the result is fed back toadapt the filter coefficients. The update function of the adaptivefilter is expressed as:ã _(j,0)(x _(n−1))=ã _(j,0)(x _(n−1))+με_(n)  [13]

FIG. 5 is a flowchart illustrating an embodiment of a process foroperating an adaptive nonlinear filter. Process 500 may be implementedon an adaptive filter system such as 200 or 400, as well as otherembodiments discussed below. At 502, an input signal and a target signalare received. At 504, a relative location of the input signal within arange of possible inputs is determined. For example, in embodiments 200and 400, a location vector is generated by the thermometer code addressgenerator. The location vector indicates the relative location of theinput signal, which corresponds to the subrange within which the inputis located. At 506, one or more input dependent filter parameters aredetermined, using the relative location information of the input. Forexample, in embodiment 200, filter coefficients are computed usingvectors selected from memory banks, based on the relative location ofthe input. In embodiment 400, functions ã_(k)(x_(n−k)) or their mappedvalues are selected from memory banks, based on the relative location ofthe input.

At 508, an output signal is generated using the input dependent filterparameter. In embodiment 200, for example, the output signal isgenerated by multiplying the filter coefficients with the input samplesand summing the results. In embodiment 400, the output signal isgenerated by summing results of the functions selected from the memorybanks. At 510, a feedback signal is generated and fed back to thesystem. The feedback signal is based at least in part on the outputsignal and the target signal. In embodiment 200, the feedback signal isused to update the coefficients stored in the memory banks. Inembodiment 400, the feedback signal is used to update the functions orfunction values stored in the memory banks.

In some embodiments, multiple adaptive nonlinear filters are cascaded toform filter functions that are nonlinear functions of nonlinearfunctions. FIG. 6 is a block diagram illustrating an embodiment of acascaded nonlinear filter. Adaptive nonlinear filter 600 includes afirst adaptive nonlinear filter 602, whose output is sent to the inputof a second adaptive nonlinear filter 604. In other embodiments, theremay be more than two cascaded adaptive nonlinear filters.

Let filter 602 be expressed as:y _(n) =ã ₀(X _(n))x _(n) +ã ₁(X _(n))x _(n−1) + . . . +ã _(N−1)(X_(n))x _(n−N+1)  [14]where X_(n)=[x_(n) . . . x_(n−N+1)].

Filter 604 is expressed as:w _(n) {tilde over (b)} ₀(Y _(n))y _(n) +{tilde over (b)} ₁(Y _(n))y_(n−1) + . . . +{tilde over (b)} _(N−1)(Y _(n))y _(n−N+1)  [15]where Y_(n)=[y_(n) . . . y_(n−N+1)].

Thus,w _(n) ={tilde over (b)} ₀(Y _(n))Ã _(n) X _(n) +{tilde over (b)} ₁(Y_(n))Ã _(n−1) X _(n−1) + . . . +{tilde over (b)} _(N−1)(Y _(n))Ã_(n−N+1) X _(n−N+1)  [16]

X_(n−j) in equation [16] corresponds to vector └x_(n−j) . . .x_(n−j−N+1)┘, which has a length of N. The resulting cascaded filterfunction w_(n) is a nonlinear function of [x_(n) . . . x_(n−2N+1)],which has a length of 2N−1. The cascaded filter of length 2N−1 requiresless memory than a single uncascaded filter of length 2N. Suppose theinput range is divided into S subranges, then 2N×S coefficients arerequired by a cascaded filter such as 600. In contrast, a singleuncascaded filter of length 2N would require 2N×2N×S coefficiententries. Thus, the cascade filter comprising two length-N filtersrequires ½ of the amount of memory required by an uncascaded length-2Nfilter. More generally, a cascaded filters comprising L filter tapsrequires 1/L as much memory as an uncascaded filter of approximately thesame length.

The feedback loops of filters 602 and 604 are similar to the feedbackloop shown in FIG. 2. Only the feedback loops of memory banks 606 d and608 d are illustrated in the diagram and the feedback loops of othermemory banks are not shown. The cascaded filter is adapted according tothe following:{tilde over (b)} _(j)(Y _(n))={tilde over (b)} _(j)(Y _(n))+με_(n) y_(n−j)  [17]ã _(j)(X _(n))=ã _(j)(X _(n))+με_(n) x _(n−j)  [18]

In some embodiments, an adaptive nonlinear filter is configured tohandle complex signals. FIG. 7 is a block diagram illustrating anotherembodiment of an adaptive nonlinear filter. In this example, adaptivenonlinear filter 700 includes a quadrature separator 702 that separatesthe signal into in-phase (I) and quadrature phase (Q) components. Theadaptive nonlinear filter 700 further includes two adaptive filtermodules in a parallel configuration for processing the I and Qcomponents. I and Q components are sent to their respective respectivethermometer code address generators. The coded output for signalx_(In−j) is used as a memory address for selecting a vectorÃ_(In−j)(x_(In−j)) from memory banks 706 a-d. Similarly, the codedoutput for signal x_(Qn−j) is used to select a vector Ã_(Qn−j)(x_(Qn−j))from memory banks 708 a-d. The outputs from I and Q branches {circumflexover (η)}_(In) and {circumflex over (η)}_(Qn) are combined by aquadrature combiner 704.

Filter 700 is expressed as:

$\begin{matrix}{y_{I\; n} = {{{{{\overset{\sim}{a}}_{I\; 0}\left( X_{n} \right)}x_{I\; n}} + {{{\overset{\sim}{a}}_{I\; 1}\left( X_{n - 1} \right)}x_{{I\; n} - 1}} + \ldots + {{{\overset{\sim}{a}}_{{I\; N} - 1}\left( X_{n - N + 1} \right)}x_{{I\; n} - N + 1}} + {{{\overset{\sim}{a}}_{Q\; 0}\left( X_{n} \right)}x_{Q\; n}} + {\overset{\sim}{a}}_{Q\; n} + {{{\overset{\sim}{a}}_{Q\; 1}\left( X_{n - 1} \right)}x_{{Q\; n} - 1}} + \ldots + {{{\overset{\sim}{a}}_{{Q\; N} - 1}\left( X_{n - N + 1} \right)}x_{{Q\; n} - N + 1}}} = {\quad{{\left\lbrack {{{\overset{\sim}{A}}_{I\; 0}\left( x_{I\; n} \right)} + {{\overset{\sim}{A}}_{I\; 1}\left( x_{{I\; n} - 1} \right)} + \ldots + {{\overset{\sim}{A}}_{{I\; N} - 1}\left( x_{{I\; n} + N + 1} \right)} + {{\overset{\sim}{A}}_{Q\; 0}\left( x_{Q\; n} \right)} + {{\overset{\sim}{A}}_{Q\; 1}\left( x_{{Q\; n} - 1} \right)} + \ldots + {{\overset{\sim}{A}}_{{Q\; N} - 1}\left( x_{{Q\; n} - N + 1} \right)}} \right\rbrack X_{n}} = {{\left\lbrack {\sum\limits_{j = 0}^{N - 1}\;\left( {{{\overset{\sim}{A}}_{{I\; n} - j}\left( x_{{I\; n} - j} \right)} + {{\overset{\sim}{A}}_{{Q\; n} - j}\left( x_{{Q\; n} - j} \right)}} \right)} \right\rbrack X_{n}} = {{\overset{\sim}{A}}_{I\; n}X_{n}{and}}}}}}} & \left\lbrack {19I} \right\rbrack \\\begin{matrix}{y_{I\; n} = {{{{{\overset{\sim}{a}}_{I\; 0}\left( X_{n} \right)}x_{Q\; n}} + {{{\overset{\sim}{a}}_{I\; 1}\left( X_{n - 1} \right)}x_{{Q\; n} - 1}} + \ldots + {{{\overset{\sim}{a}}_{{I\; N} - 1}\left( X_{n - N + 1} \right)}x_{{Q\; n} - N + 1}} - {{{\overset{\sim}{a}}_{Q\; 0}\left( X_{n} \right)}x_{I\; n}} - {{{\overset{\sim}{a}}_{Q\; 1}\left( X_{n - 1} \right)}x_{{I\; n} - 1}} - \ldots - {{{\overset{\sim}{a}}_{{Q\; N} - 1}\left( X_{n - N + 1} \right)}x_{{I\; n} - N + 1}}} = {\quad{{\left\lbrack {\sum\limits_{j = 0}^{N - 1}\;\left( {{{\overset{\sim}{A}}_{{I\; n} - j}\left( x_{{Q\; n} - j} \right)} - {{\overset{\sim}{A}}_{{Q\; n} - j}\left( x_{{I\; n} - j} \right)}} \right)} \right\rbrack X_{n}} = {{\overset{\sim}{A}}_{Q\; n}X_{n}}}}}} & \;\end{matrix} & \left\lbrack {19Q} \right\rbrack\end{matrix}$

{circumflex over (η)}_(In) and {circumflex over (η)}_(Qn) are subtractedfrom I and Q components of the target signal, η_(In) and η_(Qn),respectively, to generate error signals ε_(In) and ε_(Qn). The errorsare fed back to update the stored coefficients. The feedback loops aresimilar to those of FIG. 2 and are not shown in the diagram.

2N multiplications are required to generate output term y_(In) and 2Nadditional multiplications are required for the updates associated withthe memory banks storing the coefficients for the I component.Similarly, a total of 4N multiplications are also required to generateoutput term y_(Qn) and to update the memory banks storing thecoefficients for the Q component.

In some embodiments, the adaptive nonlinear filter is configured tohandle even or odd harmonic distortions in the target signal. Whether aharmonic distortion is even or odd depends on the frequency location ofthe distortion relative to the desired signal, i.e. whether thedistortion occurs at an even or an odd multiple of the desiredfrequency. FIGS. 8 and 9 are block diagrams illustrating embodiments ofadaptive nonlinear filters that handle even and odd harmonicdistortions, respectively. In the examples shown, filters 800 and 900each include an absolute value operator (802 and 902, respectively)coupled to their respective input terminals. The thermometer codeaddress generator generates an output according to the following:{right arrow over (x)} _(n−j)=Sign(|x _(n−j)|−{right arrow over(β)})  [20]

Filters 800 and 900 further include sign operators 804 and 904,respectively. The sign operator extracts the sign of the input,outputting either −1 or 1. In both filter embodiments, the sign of theinput is multiplied with the thermometer code address, and themultiplication result is used as the address for selecting anappropriate coefficient vector from the corresponding memory bank. Delayelements and additional memory banks are included to providecoefficients for additional filter taps. In even harmonic filter 800,selected values from the memory banks are summed to generate appropriatefilter coefficients. In odd harmonic filter 900, the selected values aremultiplied with their corresponding sign values before they are summedto generate the filter coefficients. The general expression for thistype of N-tap filter is:

$\begin{matrix}{y_{n} = \left\lbrack {{{s_{0\; n}{{\overset{\sim}{A}}_{0}\left( {x_{n}} \right)}} + {s_{1\; n}{{\overset{\sim}{A}}_{1}\left( {x_{n - 1}} \right)}} + \ldots + {\left. \quad{s_{N - {1\; n}}{{\overset{\sim}{A}}_{N - 1}\left( {x_{n - N + 1}} \right)}} \right\rbrack X_{n}}} = {{\left\lbrack {\sum\limits_{j = 0}^{N - 1}\;{s_{j\; n}{{\overset{\sim}{A}}_{n - j}\left( {x_{n - j}} \right)}}} \right\rbrack X_{n}} = {{\overset{\sim}{A}}_{n}X_{n}}}} \right.} & \lbrack 21\rbrack\end{matrix}$where s_(jn)=1 for an even harmonic filter such as 800, and s_(jn)=Sign(x_(n−j)) for an odd harmonic filter such as 900. A converged outputsignal of 800 has even harmonics that are approximately equal to theeven harmonics of the target signal, although its odd harmonics are notnecessarily close to the odd harmonics of the target. The resultingoutput signal of 900 has odd harmonics that are approximately the sameas the odd harmonics of the target signal, although its even harmonicsare not necessarily the same as those of the target signal.

The filter coefficients are updated according to the following:S _(n) ∘Ã _(n+1−j) =S _(n) ∘Ã _(n−j)+με_(n) |X _(n)|  [22]where

-   S_(n)=└s_(n) s_(n−1) . . . s_(n−N+1)┘ and ∘ is the operator for    element-by-element multiply.

In some embodiments, an even harmonic filter and an odd harmonic filterare combined to form a composite filter that handles both even and oddharmonics. Components such as the absolute value operator, thethermometer code address generator, and the sign operator can be sharedby the odd and even filter branches.

Nonlinear adaptive filters are used in many applications. FIGS. 10A-10Care block diagrams illustrating several example applications that employnonlinear adaptive filters. Many other systems and configurations arepossible. In example systems 1000, 1030, and 1060, adaptive filtermodules 1002, 1032, and 1062 may be implemented using any of theadaptive filter module embodiments described above. Modules 1002, 1032and 1062 are coupled to nonlinear systems 1004, 1034, and 1064. Thenonlinear systems can be any type of nonlinear system whose outputsignal y is a nonlinear function of input signal x, for examplenonlinear channels such as communication channels with channeldistortion, nonlinear components such as electrical and/or opticaldevices (e.g., amplifiers, transceivers) that process and/or propagatethe input signals, or combinations thereof. In some embodiments, one ormore analog to digital converters and/or digital to analog convertersare included with the nonlinear system to ensure compatibility betweendigital and analog components. The adaptive filter modules in theexample systems and their corresponding feedback loops are configureddifferently depending on the functions performed.

In example system 1000 of FIG. 10A, adaptive filter module 1002 performsa modeling function to model the function of nonlinear system 1004. Inthis example, input x of system 1004 is also sent to 1002 as theadaptive filter's input, and output y of system 1004 is sent to filter1002 as the target signal. Adaptive filter module 1002 adapts its filtercoefficients to drive its output ŷ close to y, forming a filter whosefilter function approximates the nonlinear function of system 1004. Inother words, adaptive filter module 1002 continuously adapts itscoefficients based on the feedback error signal ε (which is thedifference between nonlinear system 1004's output y and adaptive filtermodule 1002's output ŷ), until the error is less than or equal to apredetermined value ε₀.

In example system 1030 of FIG. 10B, adaptive filter module 1032 performspost-distortion correction function to compensate for distortionpreviously introduced by nonlinear system 1034. The input signal ofadaptive filter module 1032 is the output of system 1034, y. The targetsignal of adaptive filter module 1032 is the input to system 1034, x.Adaptive filter module 1032 adapts its coefficients, driving its output{circumflex over (x)} close to the target signal x. Thus, the filterfunction of adaptive filter module is approximately the inverse functionof nonlinear system 1034, and distortions introduced by nonlinear system1034 are corrected.

In example system 1060 of FIG. 10C, adaptive filter module 1062 performspre-distortion correction function to compensate for distortion that islater introduced by nonlinear system 1064. The input signal to adaptivefilter module 1062 is the same as the input to the entire system, x. Theoutput of the adaptive filter module is the input to nonlinear system1064. The target signal to the adaptive filter module is the output ofnonlinear system 1064, {circumflex over (x)}. Adaptive filter module1062 adapts its coefficients to drive the output of nonlinear system1064 {circumflex over (x)} close to the input signal x. Since the filterfunction of adaptive filter module is approximately the inverse ofnonlinear system 1064's filter function, the output signal y ispre-compensated before it is sent to nonlinear system 1064, anddistortions introduced by the nonlinear system are corrected.

Adaptive nonlinear filtering has been described. The technique allowsnonlinear filter functions to be implemented using relatively simpleelements such as memory banks and/or arithmetic operators, and hasrelatively inexpensive computational requirements.

Although the foregoing embodiments have been described in some detailfor purposes of clarity of understanding, the invention is not limitedto the details provided. There are many alternative ways of implementingthe invention. The disclosed embodiments are illustrative and notrestrictive.

1. An adaptive nonlinear filtering system comprising: a first interfaceconfigured to receive an input signal; a second interface configured toreceive a target signal; an adaptive filter module coupled to the firstinterface, configured to: divide a range of possible input values of theinput signal into a plurality of subranges; determine the subrangewithin which a value of the input signal falls; determine an inputdependent filter parameter based at least in part on the determinedsubrange; generate an output signal based at least in part on the inputdependent filter parameter; and feed back a feedback signal that isgenerated based at least in part on the output signal and the targetsignal.
 2. The system of claim 1, wherein the adaptive filter module isfurther configured to: determine a delayed subrange pertaining to asubrange within which a delayed input signal falls; and wherein theinput dependent filter parameter is determined further based at least inpart on the delayed subrange.
 3. The system of claim 1, wherein theinput dependent filter parameter includes a filter coefficient value. 4.The system of claim 1, wherein the input dependent filter parameterincludes a filter coefficient function.
 5. The system of claim 1,wherein the input dependent filter parameter includes a constructionfunction.
 6. The system of claim 1, wherein the adaptive filter moduleincludes a memory bank.
 7. The system of claim 6, wherein the inputrange is divided into S subranges, and the memory bank stores S sets ofvalues.
 8. The system of claim 1, wherein the adaptive filter moduleincludes a plurality of memory banks.
 9. The system of claim 6, whereinthe adaptive filter module is further configured to adapt a value storedin the memory bank.
 10. The system of claim 8, wherein the adaptivefilter module is further configured to: determine a delayed subrangepertaining to a subrange within which a delayed input signal falls; andwherein determining the input dependent filter parameter includes:selecting a first value from a first one of the plurality of memorybanks using the determined subrange; selecting a second value from asecond one of the plurality of memory banks using the delayed subrange;and summing the first value and the second value.
 11. The system ofclaim 10, wherein the input dependent filter parameter includes a filtercoefficient that is dependent at least in part on a sum of the firstvalue and the second value.
 12. The system of claim 1, wherein theadaptive filter module includes N filter taps, the adaptive filtermodule includes N memory banks, and N is an integer that is greaterthan
 1. 13. The system of claim 8, wherein: the input dependent filterparameter is a first input dependent filter parameter; determining thefirst input dependent filter parameter includes selecting a firstfunction from a first one of the plurality of memory banks using therelative location information; the adaptive filter module is furtherconfigured to: determine a delayed subrange pertaining to a subrangewithin which a delayed input signal falls; and determine a second inputdependent filter parameter, including by selecting a second functionfrom a second one of the plurality of memory banks using the delayedsubrange.
 14. The system of claim 13, wherein the output signal isgenerated based at least in part on a sum of the first and the secondinput dependent filter parameters.
 15. The system of claim 1, whereinthe input range is divided into S subranges, and S depends on agranularity of a nonlinear function implemented by the adaptive filtermodule.
 16. The system of claim 1, wherein the adaptive filter module isa first adaptive filter module, and the system further comprises asecond adaptive filter module that is coupled to the first adaptivefilter module in a cascaded configuration.
 17. The system of claim 1,wherein the input signal is an in-phase (I) component of a receivedsignal.
 18. The system of claim 17, wherein the adaptive filter moduleis a first adaptive filter module configured to process the I component,and the system further includes a second adaptive filter moduleconfigured in parallel with the first adaptive filter module to processa quadrature phase (Q) component of the received signal.
 19. The systemof claim 1, wherein the adaptive filter module includes a thermometercode address generator that is configured to determine the subrange. 20.The system of claim 19, wherein the adaptive filter module furtherincludes an absolute value operator coupled to the thermometer codeaddress generator.
 21. The system of claim 19, wherein the adaptivefilter module further includes a sign operator.
 22. The system of claim1, wherein the output signal includes odd harmonics that areapproximately equal to the odd harmonics of the target signal.
 23. Thesystem of claim 1, wherein the output signal includes even harmonicsthat are approximately equal to the even harmonics of the target signal.24. The system of claim 1, wherein: the input signal is an input signalof a nonlinear system; the target signal is an output signal of thenonlinear system; and the adaptive nonlinear filtering system isconfigured to model the nonlinear system.
 25. The system of claim 1,wherein: the input signal is an output signal of a nonlinear system; thetarget signal is an input signal of the nonlinear system; and theadaptive nonlinear filtering system is configured to performpost-distortion correction on the nonlinear system.
 26. The system ofclaim 1, wherein: the output signal is an input of a nonlinear system;the target signal is an output of the nonlinear system; and the adaptivenonlinear filtering system is configured to perform pre-distortioncorrection on the nonlinear system.
 27. A signal processing method,comprising: receiving an input signal and a target signal; generatingrelative location information corresponding to a relative location of avalue of the input signal within a range of input values; determining aninput dependent filter parameter based at least in part on the relativelocation information; generating an output signal based at least in parton the input dependent filter parameter; and feeding back a feedbacksignal that is generated based at least in part on the output signal andthe target signal, wherein at least one of the above steps is performedby a processor.
 28. An adaptive filter module comprising: a memory bankstoring a plurality of entries; a thermometer code address generatorcoupled to the memory bank, the thermometer code address generatorconfigured to generate relative location information corresponding to arelative location of a value of an input signal within a range ofpossible input values, the relative location information being used toselect an entry from the memory bank, and the entry being used togenerate an output signal; and a feedback loop coupled to the memorybank, configured to update the memory bank using a feedback signal thatis based at least in part on the output signal.